Užtikrinkite sklandžią integraciją ir nuoseklią vartotojo patirtį įvairiose „frontend“ sistemose, įvaldydami tinklalapio komponentų sąveikumo testavimą.
Tinklalapio Komponentų Sąveikumo Testavimas: Suderinamumo Tarp Įvairių Sistemų Patikra
Šiuolaikiniame sparčiai besivystančiame „frontend“ pasaulyje programuotojai nuolat ieško sprendimų, kurie skatintų pakartotinį panaudojimą, palaikomumą ir programuotojų efektyvumą. Tinklalapio komponentai (Web Components) tapo galingu standartu, siūlančiu inkapsuliuotus, nuo sistemos nepriklausomus vartotojo sąsajos elementus, kuriuos galima naudoti skirtinguose projektuose ir net skirtingose JavaScript sistemose. Tačiau tikroji tinklalapio komponentų galia atsiskleidžia tada, kai jie gali sklandžiai integruotis į bet kokią aplinką, nepriklausomai nuo naudojamos sistemos. Būtent čia griežtas tinklalapio komponentų sąveikumo testavimas tampa ypač svarbus. Šiame įraše gilinamasi į kritinius aspektus, kaip užtikrinti, kad jūsų tinklalapio komponentai gerai veiktų su daugybe „frontend“ sistemų ir bibliotekų, skatinant tikrą suderinamumą tarp sistemų.
Tinklalapio Komponentų Pažadas
Tinklalapio komponentai – tai žiniatinklio platformos API rinkinys, leidžiantis kurti naujas, pasirinktines, daugkartinio naudojimo ir inkapsuliuotas HTML žymes, kurios sudaro jūsų tinklalapio komponentus. Pagrindinės technologijos apima:
- Pasirinktiniai Elementai (Custom Elements): API, skirti apibrėžti ir sukurti pasirinktinius HTML elementus ir jų elgseną.
- Šešėlinis DOM (Shadow DOM): API, skirti inkapsuliuoti DOM ir CSS, užkertant kelią stilių konfliktams ir užtikrinant komponentų izoliaciją.
- HTML Šablonai (HTML Templates):
<template>ir<slot>elementai, skirti kurti daugkartinio naudojimo žymėjimo struktūras.
Iš prigimties nuo sistemų nepriklausomas tinklalapio komponentų pobūdis reiškia, kad jie sukurti veikti nepriklausomai nuo bet kokios JavaScript sistemos. Tačiau šis pažadas visiškai įgyvendinamas tik tada, jei komponentus galima integruoti ir jie teisingai veikia įvairiose populiariose sistemose, tokiose kaip React, Angular, Vue.js, Svelte ir net paprastame HTML/JavaScript. Tai mus atveda prie esminės disciplinos – sąveikumo testavimo.
Kodėl Sąveikumo Testavimas Yra Būtinas?
Be išsamaus sąveikumo testavimo, „nuo sistemos nepriklausomumo“ pažadas gali tapti rimtu iššūkiu:
- Nenuosekli Vartotojo Patirtis: Komponentas gali būti atvaizduojamas skirtingai arba veikti netikėtai, kai naudojamas skirtingose sistemose, o tai lemia suskaidytas ir painias vartotojo sąsajas.
- Padidėjusios Programavimo Išlaidos: Programuotojams gali tekti rašyti specifinius sistemai apvalkalus (wrappers) ar aplinkkelius komponentams, kurie neintegruojasi sklandžiai, taip panaikinant pakartotinio naudojimo naudą.
- Priežiūros Košmarai: Komponentų, kurie skirtingose aplinkose veikia nepastoviai, derinimas ir priežiūra tampa didele našta.
- Ribotas Pritaikymas: Jei tinklalapio komponentų biblioteka nėra patikimai veikianti pagrindinėse sistemose, jos pritaikymas bus labai ribotas, sumažinant jos bendrą vertę.
- Prieinamumo ir Našumo Regresijos: Sistemos specifinis atvaizdavimas ar įvykių apdorojimas gali netyčia sukelti prieinamumo problemų ar našumo trikdžių, kurie gali būti nepastebimi vienos sistemos testavimo aplinkoje.
Pasaulinei auditorijai, kuriančiai programas su įvairiais technologijų rinkiniais, užtikrinti, kad tinklalapio komponentai būtų tikrai sąveikūs, yra ne tik gera praktika, bet ir būtinybė efektyviam, mastelio keitimui pritaikytam ir patikimam programavimui.
Pagrindinės Tinklalapio Komponentų Sąveikumo Testavimo Sritys
Efektyviam sąveikumo testavimui reikalingas sistemingas požiūris, sutelktas į kelias pagrindines sritis:
1. Pagrindinis Atvaizdavimas ir Atributų/Savybių Apdorojimas
Tai yra pagrindinis testavimo lygmuo. Jūsų tinklalapio komponentas turėtų būti atvaizduojamas teisingai ir reaguoti į savo atributus bei savybes kaip tikėtasi, nepriklausomai nuo to, kaip jis yra sukurtas:
- Atributų Susiejimas (Attribute Binding): Testuokite, kaip perduodami ir apdorojami eilutės tipo atributai. Sistemos dažnai turi skirtingas atributų susiejimo konvencijas (pvz., kebab-case vs. camelCase).
- Savybių Susiejimas (Property Binding): Užtikrinkite, kad sudėtingi duomenų tipai (objektai, masyvai, loginės reikšmės) gali būti perduodami kaip savybės. Tai dažnai yra skirtumų tarp sistemų taškas. Pavyzdžiui, React sistemoje galite perduoti savybę (prop) tiesiogiai, o Vue sistemoje ji gali būti susieta su
v-bind. - Įvykių Skleidimas (Event Emission): Patikrinkite, ar pasirinktiniai įvykiai yra tinkamai išsiunčiami ir ar juos gali „klausytis“ pagrindinė sistema. Sistemos dažnai pateikia savo įvykių apdorojimo mechanizmus (pvz., React
onEventName, Vue@event-name). - Lizdų Turinio Projektavimas (Slot Content Projection): Užtikrinkite, kad turinys, perduodamas į lizdus (numatytuosius ir pavadintus), būtų tiksliai atvaizduojamas visose sistemose.
Pavyzdys: Apsvarstykite pasirinktinį mygtuko komponentą <my-button> su atributais kaip color ir savybėmis kaip disabled. Testavimas apima:
- Naudojant
<my-button color="blue"></my-button>paprastame HTML. - Naudojant
<my-button color={'blue'}></my-button>React sistemoje. - Naudojant
<my-button :color='"blue"'></my-button>Vue sistemoje. - Užtikrinant, kad
disabledsavybę galima teisingai nustatyti ir atšaukti kiekviename kontekste.
2. Šešėlinio DOM Inkapsuliacija ir Stilizavimas
Šešėlinis DOM yra raktas į tinklalapio komponentų inkapsuliaciją. Tačiau sąveiką tarp pagrindinės sistemos stilių ir komponento šešėlinio DOM stilių reikia atidžiai patikrinti:
- Stilių Izoliacija: Patikrinkite, ar stiliai, apibrėžti tinklalapio komponento šešėliniame DOM, „nenuteka“ ir neveikia pagrindinio puslapio ar kitų komponentų.
- Stilių Paveldėjimas: Testuokite, kaip CSS kintamieji (pasirinktinės savybės) ir paveldėti stiliai iš šviesiojo DOM (light DOM) patenka į šešėlinį DOM. Dauguma šiuolaikinių sistemų palaiko CSS kintamuosius, tačiau senesnės versijos ar specifinės konfigūracijos gali kelti iššūkių.
- Globalūs Stilių Failai: Užtikrinkite, kad globalūs stilių failai netyčia neužgožtų komponento stilių, nebent tai būtų aiškiai numatyta per CSS kintamuosius ar specifinius selektorius.
- Sistemai Specifiniai Stiliavimo Sprendimai: Kai kurios sistemos turi savo stiliavimo sprendimus (pvz., CSS moduliai, styled-components React sistemoje, Vue apimties CSS). Testuokite, kaip jūsų tinklalapio komponentas elgiasi, kai yra patalpintas šiose stilizuotose aplinkose.
Pavyzdys: Modalinio lango komponentas su vidiniu stiliumi jo antraštei, kūnui ir poraščiui. Patikrinkite, ar šie vidiniai stiliai yra apriboti ir ar globalūs puslapio stiliai nesugadina modalinio lango išdėstymo. Taip pat patikrinkite, ar CSS kintamieji, apibrėžti pagrindiniame elemente, gali būti naudojami modalinio lango šešėliniame DOM, siekiant pritaikyti jo išvaizdą, pavyzdžiui, --modal-background-color.
3. Duomenų Susiejimas ir Būsenos Valdymas
Kaip duomenys keliauja į jūsų tinklalapio komponentą ir iš jo, yra labai svarbu sudėtingoms programoms:
- Dvipusis Duomenų Susiejimas: Jei jūsų komponentas palaiko dvipusį susiejimą (pvz., įvesties laukas), patikrinkite, ar jis sklandžiai veikia su sistemomis, kurios turi savo dvipusio susiejimo mechanizmus (kaip Angular
ngModelar Vuev-model). Tai dažnai apima įvesties įvykių klausymąsi ir savybių atnaujinimą. - Sistemos Būsenos Integracija: Testuokite, kaip jūsų komponento vidinė būsena (jei tokia yra) sąveikauja su pagrindinės sistemos būsenos valdymo sprendimais (pvz., Redux, Vuex, Zustand, Angular paslaugomis).
- Sudėtingos Duomenų Struktūros: Užtikrinkite, kad sudėtingi duomenų objektai ir masyvai, perduodami kaip savybės, yra teisingai apdorojami, ypač kai vyksta pakeitimai komponente ar sistemoje.
Pavyzdys: Formos įvesties komponentas, kuris naudoja v-model Vue sistemoje. Tinklalapio komponentas turėtų išsiųsti `input` įvykį su nauja reikšme, kurią Vue v-model tada užfiksuoja ir atnaujina susietą duomenų savybę.
4. Įvykių Apdorojimas ir Komunikacija
Komponentai turi bendrauti su savo aplinka. Įvykių apdorojimo testavimas skirtingose sistemose yra gyvybiškai svarbus:
- Pasirinktinių Įvykių Pavadinimai: Užtikrinkite nuoseklumą pasirinktinių įvykių pavadinimuose ir duomenų turinyje (payloads).
- Natūralūs Naršyklės Įvykiai: Patikrinkite, ar natūralūs naršyklės įvykiai (pvz., `click`, `focus`, `blur`) yra teisingai perduodami ir gali būti užfiksuoti pagrindinės sistemos.
- Sistemos Įvykių Apvalkalai (Wrappers): Kai kurios sistemos gali apvilkti natūralius ar pasirinktinius įvykius. Patikrinkite, ar šie apvalkalai nekeičia įvykio duomenų ar netrukdo prijungti klausytojų.
Pavyzdys: Velkamas komponentas, kuris išsiunčia 'drag-end' pasirinktinį įvykį su koordinatėmis. Patikrinkite, ar šį įvykį gali pagauti React komponentas naudojant onDragEnd={handleDragEnd} ir Vue komponentas naudojant @drag-end="handleDragEnd".
5. Gyvavimo Ciklo Iškvietos (Callbacks)
Tinklalapio komponentai turi apibrėžtas gyvavimo ciklo iškvietas (pvz., `connectedCallback`, `disconnectedCallback`, `attributeChangedCallback`). Jų sąveika su sistemų gyvavimo ciklais reikalauja atidaus apsvarstymo:
- Inicializacijos Eilės Tvarka: Supraskite, kaip jūsų komponento gyvavimo ciklo iškvietos veikia palyginti su pagrindinės sistemos komponentų gyvavimo ciklo metodais (hooks).
- DOM Prijungimas/Atjungimas: Užtikrinkite, kad `connectedCallback` ir `disconnectedCallback` yra patikimai iškviečiami, kai komponentas yra pridedamas į DOM arba pašalinamas iš jo naudojant sistemos atvaizdavimo variklį.
- Atributų Pakeitimai: Patikrinkite, ar `attributeChangedCallback` teisingai stebi atributų pakeitimus, ypač kai sistemos gali dinamiškai atnaujinti atributus.
Pavyzdys: Komponentas, kuris gauna duomenis savo `connectedCallback` metode. Patikrinkite, ar ši duomenų užklausa atliekama tik vieną kartą, kai komponentas yra prijungiamas Angular, React ar Vue sistemose, ir ar ji yra tinkamai išvaloma (pvz., nutraukiant užklausas), kai iškviečiamas `disconnectedCallback`.
6. Prieinamumas (A11y)
Prieinamumas turėtų būti aukščiausio lygio prioritetas. Sąveikumo testavimas turi užtikrinti, kad prieinamumo standartai būtų išlaikomi visose sistemose:
- ARIA Atributai: Užtikrinkite, kad atitinkamos ARIA rolės, būsenos ir savybės yra teisingai pritaikytos ir prieinamos pagalbinėms technologijoms.
- Navigacija Klaviatūra: Patikrinkite, ar komponentu galima visiškai naršyti ir jį valdyti naudojant klaviatūrą kiekvienos sistemos kontekste.
- Fokusavimo Valdymas: Patikrinkite, ar fokusavimo valdymas šešėliniame DOM ir jo sąveika su pagrindinės sistemos fokusavimo valdymo strategijomis yra patikimi.
- Semantinis HTML: Užtikrinkite, kad pagrindinė struktūra naudoja semantiškai tinkamus HTML elementus.
Pavyzdys: Pasirinktinis dialogo lango tinklalapio komponentas turi teisingai valdyti fokusą, įkalindamas jį dialogo lange, kai jis atidarytas, ir grąžindamas jį elementui, kuris iškvietė dialogą, kai jis uždaromas. Šis elgesys turi būti nuoseklus, nesvarbu, ar dialogas naudojamas Angular programoje, ar paprastame HTML puslapyje.
7. Našumo Aspektai
Našumą gali paveikti tai, kaip sistemos sąveikauja su tinklalapio komponentais:
- Pradinio Atvaizdavimo Laikas: Išmatuokite, kaip greitai komponentas atvaizduojamas, kai integruojamas į skirtingas sistemas.
- Atnaujinimo Našumas: Stebėkite našumą būsenos pasikeitimų ir perpiešimų metu. Neefektyvus duomenų susiejimas ar pernelyg didelis DOM manipuliavimas iš sistemos, sąveikaujančios su komponentu, gali sukelti sulėtėjimų.
- Paketo Dydis: Nors patys tinklalapio komponentai dažnai yra nedideli, sistemos apvalkalai ar kūrimo konfigūracijos gali pridėti papildomų išlaidų.
Pavyzdys: Sudėtingas duomenų tinklelio tinklalapio komponentas. Patikrinkite jo slinkimo našumą ir atnaujinimo greitį, kai jis užpildytas tūkstančiais eilučių React programoje, palyginti su vaniline JavaScript programa. Ieškokite skirtumų procesoriaus naudojime ir kadrų kritimuose.
8. Sistemai Specifiniai Niunasai ir Kraštutiniai Atvejai
Kiekviena sistema turi savo ypatumų ir žiniatinklio standartų interpretacijų. Išsamus testavimas apima jų atskleidimą:
- Serverio Pusės Atvaizdavimas (SSR): Kaip jūsų tinklalapio komponentas elgiasi SSR metu? Kai kurios sistemos gali susidurti su sunkumais teisingai „hidratuoti“ tinklalapio komponentus po pradinio serverio atvaizdavimo.
- Tipų Sistemos (TypeScript): Jei naudojate TypeScript, užtikrinkite, kad jūsų tinklalapio komponentų tipų apibrėžimai yra suderinami su tuo, kaip juos naudoja sistemos.
- Įrankiai ir Kūrimo Procesai: Skirtingi kūrimo įrankiai (Webpack, Vite, Rollup) ir sistemų CLI gali paveikti, kaip tinklalapio komponentai yra pakuojami ir apdorojami.
Pavyzdys: Tinklalapio komponento testavimas su SSR Angular Universal sistemoje. Patikrinkite, ar komponentas teisingai atvaizduojamas serveryje ir tada tinkamai hidratuojamas kliente be klaidų ar netikėtų perpiešimų.
Efektyvaus Sąveikumo Testavimo Strategijos
Tvirtos testavimo strategijos priėmimas yra raktas į patikimą suderinamumą tarp sistemų:
1. Išsamaus Testų Rinkinio Kūrimas
Jūsų testų rinkinys turėtų apimti visas anksčiau minėtas kritines sritis. Apsvarstykite:
- Vienetų Testai (Unit Tests): Individualiai komponento logikai ir vidinei būsenai.
- Integracijos Testai (Integration Tests): Norint patikrinti sąveiką tarp jūsų tinklalapio komponento ir pagrindinės sistemos. Būtent čia sąveikumo testavimas atsiskleidžia geriausiai.
- „End-to-End“ (E2E) Testai: Vartotojų srautų simuliavimui skirtingų sistemų programose.
2. Testavimo Sistemų Panaudojimas
Naudokite nusistovėjusius testavimo įrankius ir bibliotekas:
- Jest/Vitest: Galingos JavaScript testavimo sistemos vienetų ir integracijos testams.
- Playwright/Cypress: „End-to-end“ testavimui, leidžiančiam simuliuoti vartotojo sąveikas realiose naršyklės aplinkose skirtingose sistemose.
- WebdriverIO: Dar viena patikima E2E testavimo sistema, palaikanti kelias naršykles.
3. Kiekvienai Sistemai Skirtų Testavimo Programų Kūrimas
Efektyviausias būdas testuoti sąveikumą yra sukurti mažas, specializuotas programas ar testavimo aplinkas naudojant kiekvieną tikslinę sistemą. Pavyzdžiui:
- React Testavimo Programa: Minimali React programa, kuri importuoja ir naudoja jūsų tinklalapio komponentus.
- Angular Testavimo Programa: Paprastas Angular projektas, demonstruojantis jūsų komponentus.
- Vue Testavimo Programa: Bazinė Vue.js programa.
- Svelte Testavimo Programa: Svelte projektas.
- Paprasta HTML/JS Programa: Bazinė linija standartiniam žiniatinklio elgesiui.
Šiose programose rašykite integracijos testus, kurie konkrečiai nukreipti į įprastus naudojimo atvejus ir galimas pinkles.
4. Automatizuotas Testavimas ir CI/CD Integracija
Kuo labiau automatizuokite savo testus ir integruokite juos į savo nuolatinės integracijos/nuolatinio diegimo (CI/CD) procesą. Tai užtikrina, kad kiekvienas kodo pakeitimas yra automatiškai patikrinamas visose tikslinėse sistemose, anksti pagaunant regresijas.
CI/CD Darbo Eigos Pavyzdys:
- Nusiųsti kodą į repozitoriją.
- CI serveris paleidžia kūrimo procesą.
- Kūrimo procesas sukompiliuoja tinklalapio komponentus ir nustato testavimo aplinkas React, Angular, Vue sistemoms.
- Automatizuoti testai paleidžiami kiekvienoje aplinkoje (vienetų, integracijos, E2E).
- Siunčiami pranešimai apie testų sėkmę ar nesėkmę.
- Jei testai sėkmingi, paleidžiamas diegimo procesas.
5. Našumo Profiliavimas ir Stebėjimas
Integruokite našumo testavimą į savo automatizuotą rinkinį. Naudokite naršyklės kūrėjo įrankius ar specializuotus profiliavimo įrankius, kad išmatuotumėte pagrindinius rodiklius, tokius kaip įkėlimo laikas, atminties naudojimas ir sąveikos reaktyvumas kiekvienos sistemos kontekste.
6. Dokumentacija Apie Integraciją su Sistemomis
Pateikite aiškią ir glaustą dokumentaciją, kaip integruoti jūsų tinklalapio komponentus su populiariomis sistemomis. Tai apima:
- Diegimo instrukcijas.
- Atributų ir savybių susiejimo pavyzdžius.
- Kaip tvarkyti pasirinktinius įvykius.
- Patarimus, kaip elgtis su sistemos specifiniais niuansais (pvz., SSR).
Ši dokumentacija turėtų atspindėti jūsų sąveikumo testavimo išvadas.
7. Bendruomenės Atsiliepimai ir Klaidų Pranešimai
Skatinkite vartotojus pranešti apie bet kokias sąveikumo problemas, su kuriomis jie susiduria. Įvairi pasaulinė vartotojų bazė neišvengiamai ras kraštutinius atvejus, kuriuos galėjote praleisti. Sukurkite aiškius kanalus klaidų pranešimams ir aktyviai spręskite praneštas problemas.
Įrankiai ir Bibliotekos Sąveikumui Užtikrinti
Nors galite kurti savo testavimo infrastruktūrą nuo nulio, keli įrankiai gali žymiai supaprastinti procesą:
- LitElement/Lit: Populiari biblioteka tinklalapio komponentams kurti, kuri pati yra plačiai testuojama tarp sistemų. Jos integruotus testavimo įrankius galima pritaikyti.
- Stencil: Kompiliatorius, kuris generuoja standartinius tinklalapio komponentus, bet taip pat teikia įrankius sistemų susiejimams, supaprastindamas integraciją ir testavimą.
- Testing Library (React Testing Library, Vue Testing Library ir kt.): Nors pirmiausia skirta sistemų specifiniams komponentams, vartotojų sąveikų ir prieinamumo testavimo principai yra taikomi. Galite juos pritaikyti testuodami, kaip sistemos sąveikauja su jūsų pasirinktiniais elementais.
- Sistemai Specifiniai Apvalkalai (Wrappers): Apsvarstykite galimybę sukurti lengvus apvalkalus savo tinklalapio komponentams kiekvienai sistemai. Šie apvalkalai gali tvarkyti sistemos specifines duomenų susiejimo konvencijas ir įvykių klausytojus, padarydami integraciją sklandesnę ir supaprastindami testavimą. Pavyzdžiui, React apvalkalas galėtų paversti React savybes (props) į tinklalapio komponento savybes ir įvykius.
Globalūs Aspektai Tinklalapio Komponentų Sąveikumui
Kuriant ir testuojant tinklalapio komponentus pasaulinei auditorijai, atsiranda keli veiksniai, viršijantys gryną techninį suderinamumą:
- Lokalizacija ir Internacionalizacija (i18n/l10n): Užtikrinkite, kad jūsų komponentai galėtų lengvai prisitaikyti prie skirtingų kalbų, datų formatų ir skaičių formatų. Tai testuoti reiškia patikrinti, kaip sistemos lokalizacijos bibliotekos sąveikauja su jūsų komponento teksto turiniu ir formatavimu.
- Laiko Juostos ir Valiutos: Jei jūsų komponentai rodo laiką ar pinigines vertes, užtikrinkite, kad jie teisingai tvarko skirtingas laiko juostas ir valiutas, ypač kai integruojami į programas, kurios valdo vartotojo specifinius nustatymus.
- Našumas Skirtinguose Regionuose: Tinklo delsa gali labai skirtis visame pasaulyje. Testuokite savo tinklalapio komponento našumą imituotuose lėtesniuose tinkluose, kad užtikrintumėte gerą patirtį vartotojams regionuose su mažiau išvystyta interneto infrastruktūra.
- Naršyklių Palaikymas: Nors tinklalapio komponentai yra plačiai palaikomi, senesnės naršyklės ar specifinės naršyklių versijos gali turėti neatitikimų. Testuokite įvairiose naršyklėse, atsižvelgdami į labiausiai paplitusias skirtingose pasaulio rinkose.
Tinklalapio Komponentų Sąveikumo Ateitis
Tinklalapio komponentams bręstant ir sistemoms vis labiau juos priimant, ribos tarp natūralių tinklalapio komponentų ir sistemų specifinių komponentų toliau nyksta. Sistemos vis geriau tiesiogiai naudoja tinklalapio komponentus, o įrankiai tobulėja, kad ši integracija būtų sklandesnė. Sąveikumo testavimo dėmesys greičiausiai pasislinks link našumo tobulinimo, prieinamumo didinimo sudėtinguose scenarijuose ir sklandžios integracijos su pažangiomis sistemų funkcijomis, tokiomis kaip SSR ir serverio komponentai, užtikrinimo.
Išvada
Tinklalapio komponentų sąveikumo testavimas nėra pasirenkamas priedas; tai yra esminis reikalavimas kuriant daugkartinio naudojimo, patikimus ir universaliai suderinamus vartotojo sąsajos elementus. Sistemingai testuodami atributų/savybių tvarkymą, šešėlinio DOM inkapsuliaciją, duomenų srautą, įvykių komunikaciją, gyvavimo ciklo nuoseklumą, prieinamumą ir našumą įvairiose „frontend“ sistemose ir aplinkose, galite atskleisti tikrąjį tinklalapio komponentų potencialą. Šis disciplinuotas požiūris užtikrina, kad jūsų komponentai suteiks nuoseklią ir patikimą vartotojo patirtį, nesvarbu, kur ar kaip jie yra diegiami, suteikdami galimybę programuotojams visame pasaulyje kurti geresnes, labiau susijusias programas.